package com.rymcu.forest.core.mapper;

import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 基础Mapper接口，提供基本的CRUD操作
 */
public interface Mapper<T> {

    /**
     * 插入记录
     */
    int insert(T record);

    /**
     * 根据主键删除记录
     */
    int deleteByPrimaryKey(Object id);

    /**
     * 根据条件删除记录
     */
    int delete(T record);

    /**
     * 根据主键更新记录
     */
    int updateByPrimaryKey(T record);

    /**
     * 根据主键选择性更新记录
     */
    int updateByPrimaryKeySelective(T record);

    /**
     * 根据主键查询记录
     */
    T selectByPrimaryKey(Object id);

    /**
     * 根据条件查询记录
     */
    T selectOne(T record);

    /**
     * 查询所有记录
     */
    List<T> selectAll();

    /**
     * 根据条件查询记录列表
     */
    List<T> select(T record);

    /**
     * 插入多条记录
     */
    int insertList(@Param("list") List<T> list);

    /**
     * 选择性插入记录
     */
    int insertSelective(T record);
}
